package com.liu.security;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * SpringSecurity的原理其实就是一个过滤器链，内部包含了提供各种功能的过滤器。这里我们可以看看入门案例中的过滤器。
 *   UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要有它负责。
 *      login POST请求拦截
 *      attemptAuthentication 账号密码认证
 *      successfulAuthentication 认证成功处理
 *   ExceptionTranslationFilter：处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException。
 *   FilterSecurityInterceptor：负责权限校验的过滤器。
 *
 * 概念速查:
 *   Authentication接口: 它的实现类，表示当前访问系统的用户，封装了用户相关信息。
 *   AuthenticationManager接口：定义了认证Authentication的方法
 *   UserDetailsService接口：加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法。
 *   UserDetails接口：提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装成UserDetails对象返回。然后将这些信息封装到Authentication对象中。
 */
@SpringBootApplication
public class SecurityApplication {

    public static void main(String[] args) {
        SpringApplication.run(SecurityApplication.class,args);
    }
}


